package com.jvyou.thread.d13waitandnotify;

import java.util.concurrent.ArrayBlockingQueue;

/**
 * @author 橘柚
 * @version 1.0-SNAPSHOT
 * @Date 2024/7/31 14:24
 * @Description 初始线程，用于生产食物
 */
public class Cook extends Thread {

    private ArrayBlockingQueue<String> queue;

    public Cook(ArrayBlockingQueue<String> queue) {
        this.queue = queue;
    }

    @Override
    public void run() {
        while (true) {
            try {
                // 项阻塞队列里面添加数据
                // 注意不用加锁，queue.put() 是阻塞方法，方法内部有锁，如果队列满了则会一直等待
                queue.put("派蒙");
                // 注意输出语句在锁的外面，所以输出的结果可能不正确
                System.out.println("生产者生产了1个应急食品" );
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}
